#include <iostream>

int main(int argc, char const *argv[])
{
    
    using namespace std;

    string str = string("helloworld");

    cout << str[4] << endl;
    cout << str.at(5) << endl;

    // 使用字符引用返回值，存储一下字符串中，指定下标位字符的引用
    char &c = str.at(5);
    cout << str << endl;

    // 修改引用的值，也会影响字符串的值
    c = 'A';
    cout << &c << endl;
    cout << str << endl;

    // 注意事项：
    //     一旦字符串中的字符数组内存重新分配了，使用之前的引用再进行空间访问，可能会出问题
    //     16 位
    // c_str：将C++风格的字符串，转成C风格的字符串（返回C++中的string 类中维护的那个字符数组指针）
    cout << (int *)str.c_str() << endl;
    str = "1234567890123456";
    cout << (int *)str.c_str() << endl;

    c = 'P';

    cout << str << endl;

    return 0;
}
